package controllers

import (
	"github.com/gin-gonic/gin"
	"github.com/skip2/go-qrcode"
	"go-admin-official/models"
	"go-admin-official/modules/auth"
	"go-admin-official/modules/page"
	"net/http"
	"net/url"
	"strings"
)

func Page(p string) func(ctx *gin.Context) {
	return func(ctx *gin.Context) {
		user, _ := auth.Filter(ctx)
		ctx.HTML(http.StatusOK, p+".tmpl", page.NewPage(user))
	}
}

func AuthPage(p string) func(ctx *gin.Context) {
	return func(ctx *gin.Context) {
		user, _ := auth.FilterRefresh(ctx)
		ctx.HTML(http.StatusOK, p+".tmpl", page.NewPage(user))
	}
}

func Index(ctx *gin.Context) {
	user, _ := auth.Filter(ctx)

	p := "index.tmpl"

	if strings.Contains(ctx.Request.Host, "com") {
		p = "en_index.tmpl"
	}

	ctx.HTML(http.StatusOK, p, page.NewPage(user))
}

type DonationPage struct {
	User models.UsersModel
	List []models.DonationsModel
}

func Donation(ctx *gin.Context) {
	user, _ := auth.Filter(ctx)
	ctx.HTML(http.StatusOK, "donation.tmpl", DonationPage{
		User: user,
		List: models.Donations().List(),
	})
}

func UserAgreement(ctx *gin.Context) {
	user, _ := auth.Filter(ctx)
	ctx.HTML(http.StatusOK, "content.tmpl", page.NewPageWithContent(user, page.Content{
		Title:     "用户协议",
		SubTitle:  "在使用GoAdmin官网服务前请仔细阅读",
		HeadTitle: "",
		Content: `<p>
                        GoAdmin在此特别提醒您（用户）在注册GoAdmin之前，请认真阅读本《用户协议》（以下简称“协议”），确保您充分理解本协议中各条款。请您审慎阅读并选择接受或不接受本协议。除非您接受本协议所有条款，否则您无权注册、登录或使用本协议所涉服务。您的注册、登录、使用等行为将视为对本协议的接受，并同意接受本协议各项条款的约束。</p>
                    <p>
                        本协议约定GoAdmin官网与用户之间的权利义务。“用户”是指注册、登录、使用本服务的个人。本协议可由GoAdmin官网随时更新，更新后的协议条款一旦公布即代替原来的协议条款，恕不再另行通知，用户可在本网站查阅最新版协议条款。在GoAdmin官网修改协议条款后，如果用户不接受修改后的条款，请立即停止使用GoAdmin官网提供的服务，用户继续使用GoAdmin官网提供的服务将被视为接受修改后的协议。</p>
                    <h3>一、帐号注册</h3>
                    <p>
                        1、在用户认可本协议，以GoAdmin官网允许的方式实际使用GoAdmin官网服务时，GoAdmin官网会向用户提供唯一编号的GoAdmin官网帐号(以下亦称“帐号”)。用户设置的实名不得违反法律法规的规定、不得侵犯或涉嫌侵犯他人合法权益，否则引起的一切后果由用户独自承担，同时GoAdmin官网保留封禁用户账号的权利。
                        用户应对帐号(包括实名)的安全以及对通过用户帐号所实施的行为负责。如果发现任何人不当使用用户的帐号或有任何其他可能危及用户帐号安全的情形时，用户应当立即以有效方式通知GoAdmin官网，要求GoAdmin官网暂停向其提供相关服务。用户理解GoAdmin官网对用户的请求采取行动需要合理时间，GoAdmin官网对在采取行动前已经产生的后果(包括但不限于用户的任何损失)不承担任何责任。</p>
                    <p>
                        2、用户保证，在用户以GoAdmin官网允许的方式实际使用GoAdmin官网服务时，用户应当是具备完全民事权利能力和完全民事行为能力的自然人、法人或其他组织。若用户不具备前述主体资格，则用户及用户的监护人应承担因此而导致的一切后果，同时GoAdmin官网将保留追究用户及其监护人民事、刑事责任等权利，且GoAdmin官网有权注销(永久冻结)用户的GoAdmin官网帐号，并有权向用户及用户的监护人索赔。</p>
                    <p>
                        3、用户应当在使用GoAdmin官网服务之前认真阅读全部协议内容。用户确认GoAdmin官网对协议中所含免除或限制其责任的条款已尽提示、说明义务，用户同意此等条款，用户如对协议内容有任何异议的，应向GoAdmin官网咨询。但无论用户事实上是否在使用GoAdmin官网服务之前认真阅读了本协议内容，只要用户使用GoAdmin官网服务，既与GoAdmin官网缔结了本协议，本协议即对用户产生约束，届时用户不应以未阅读本协议的内容或者未获得GoAdmin官网对用户问询的解答等理由，主张本协议无效或要求撤销本协议。</p>
                    <p>4、用户承诺接受并遵守本协议的约定。如果用户不同意本协议的约定，应立即停止使用GoAdmin官网的服务。</p>
                    <p>
                        5、GoAdmin官网有权根据需要不时地制订、修改本协议或各类规则，并以公示的方式进行公告，不再单独通知用户。变更后的协议和规则一经公布后，立即自动生效。如用户不同意相关变更，应当立即停止使用GoAdmin官网服务。用户继续使用GoAdmin官网服务的，即表示用户接受经修订的协议。</p>
                    <h3>二、服务内容</h3>
                    <p>1、GoAdmin官网通过网页、公众号、小程序、APP和API的形式为用户提供服务。</p>
                    <p>
                        2、GoAdmin官网免费为用户提供网络服务，付费业务将在本协议的基础上另行规定服务条款，以规范付费业务的内容和双方的权利义务，用户应认真阅读，如用户购买付费业务，则视为接受付费业务的服务条款。无论是付费业务还是GoAdmin官网免费提供的业务等，上述服务均有有效期，有效期结束后服务将自动终止，且有效期不可中断或延期。除非本注册条款另有规定，所有付费业务均不退费。</p>
                    <p>
                        3、对于利用GoAdmin官网服务进行非法活动，或违反用户使用规范的，GoAdmin官网将严肃处理，包括但不限于采取将其列入黑名单、将其被投诉的情形公之于众、删除用户帐号、移送相关司法机关查办等措施。</p>
                    <p>
                        4、用户在GoAdmin官网上传或张贴的内容(包括但不限于照片、文字、源码、素材等)，视为用户授予GoAdmin官网免许可费、非独家及可完全再授权之权利，GoAdmin官网有权为展示、传播及推广前述张贴内容的目的，对上述内容进行复制、修改、改写、改编、发行、翻译等。或将前述内容(部分或全部)加以转发、展示。该使用权持续至用户明确通知GoAdmin官网不得继续使用时止。</p>
                    <p>
                        5、用户在GoAdmin官网上传或张贴的内容(包括但不限于照片、文字、源码、素材等)，均由用户自主上传，如有第三方版权人提出侵权请求，GoAdmin官方有权利随时删除或下架相关内容。</p>
                    <h3>三、用户个人隐私信息保护</h3>
                    <p>
                        1、个人隐私信息是指涉及用户个人身份或个人隐私的信息，比如，用户真实姓名、身份证号、手机号码、手机设备识别码、IP地址、用户聊天记录。非个人隐私信息是指用户对本服务的操作状态以及使用习惯等明确且客观反映在GoAdmin官网服务器端的基本记录信息、个人隐私信息范围外的其它普通信息，以及用户同意公开的上述隐私信息。</p>
                    <p>
                        2、尊重用户个人隐私信息的私有性是GoAdmin官网的一贯制度，GoAdmin官网将采取技术措施和其他必要措施，确保用户个人隐私信息安全，防止在本服务中收集的用户个人隐私信息泄露、毁损或丢失。在发生前述情形或者GoAdmin官网发现存在发生前述情形的可能时，将及时采取补救措施。</p>
                    <p>3、GoAdmin官网未经用户同意不向任何第三方公开、 透露用户个人隐私信息。但以下特定情形除外： <br>&emsp;(1)
                        GoAdmin官网根据法律法规规定或有权机关的指示提供用户的个人隐私信息； <br>&emsp;(2)
                        由于用户将其用户密码告知他人或与他人共享注册帐户与密码，由此导致的任何个人信息的泄漏，或其他非因GoAdmin官网原因导致的个人隐私信息的泄露； <br>&emsp;(3)
                        用户自行向第三方公开其个人隐私信息； <br>&emsp;(4)
                        用户与GoAdmin官网及合作单位之间就用户个人隐私信息的使用公开达成约定，GoAdmin官网因此向合作单位公开用户个人隐私信息； <br>&emsp;(5)
                        任何由于黑客攻击、电脑病毒侵入及其他不可抗力事件导致用户个人隐私信息的泄露。</p>
                    <p>4、用户同意GoAdmin官网可在以下事项中使用用户的个人隐私信息： <br>&emsp;(1) GoAdmin官网向用户及时发送重要通知，如软件更新、本协议条款的变更； <br>&emsp;(2)
                        GoAdmin官网内部进行审计、数据分析和研究等，以改进GoAdmin官网的产品、服务和与用户之间的沟通； <br>&emsp;(3)
                        依本协议约定，GoAdmin官网管理、审查用户信息及进行处理措施； <br>&emsp;(4) 适用法律法规规定的其他事项。
                        除上述事项外，如未取得用户事先同意，GoAdmin官网不会将用户个人隐私信息使用于任何其他用途。</p>
                    <p>
                        5、GoAdmin官网重视对未成年人个人隐私信息的保护。任何18岁以下的未成年人注册帐号或使用本服务应事先取得家长或其法定监护人（以下简称"监护人"）的同意。除根据法律法规的规定及有权机关的指示披露外，GoAdmin官网不会使用或向任何第三方透露未成年人的聊天记录及其他个人隐私信息。除本协议约定的例外情形外，未经监护人事先同意，GoAdmin官网不会使用或向任何第三方透露未成年人的个人隐私信息。</p>
                    <p>6、为了改善GoAdmin官网的技术和服务，向用户提供更好的服务体验，GoAdmin官网或可会自行收集使用或向第三方提供用户的非个人隐私信息。</p>
                    <h3>四、内容规范</h3>
                    <p>
                        1、本条所述内容是指用户使用本服务过程中所制作、上载、复制、发布、传播的任何内容，包括但不限于名称等注册信息及认证资料，或文字、语音、图片、视频、图文等发送、回复或自动回复消息和相关链接页面，以及其他使用帐号或本服务所产生的内容。</p>
                    <p>2、用户不得利用GoAdmin官网帐号或本服务制作、上载、复制、发布、传播如下法律、法规和政策禁止的内容： <br>&emsp;(1) 反对宪法所确定的基本原则的； <br>&emsp;(2)
                        危害国家安全，泄露国家秘密，颠覆国家政权，破坏国家统一的； <br>&emsp;(3) 损害国家荣誉和利益的； <br>&emsp;(4) 煽动民族仇恨、民族歧视，破坏民族团结的； <br>&emsp;(5)
                        破坏国家宗教政策，宣扬邪教和封建迷信的； <br>&emsp;(6) 散布谣言，扰乱社会秩序，破坏社会稳定的； <br>&emsp;(7)
                        散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的； <br>&emsp;(8) 侮辱或者诽谤他人，侵害他人合法权益的； <br>&emsp;(9)
                        不遵守法律法规底线、社会主义制度底线、国家利益底线、公民合法权益底线、社会公共秩序底线、道德风尚底线和信息真实性底线的“七条底线”要求的； <br>&emsp;(10)
                        含有法律、行政法规禁止的其他内容的信息。</p>
                    <p>3、用户不得利用GoAdmin官网帐号或本服务制作、上载、复制、发布、传播如下干扰GoAdmin官网正常运营，以及侵犯其他用户或第三方合法权益的内容： <br>&emsp;(1)
                        含有任何性或性暗示的； <br>&emsp;(2) 含有辱骂、恐吓、威胁内容的； <br>&emsp;(3) 含有骚扰、垃圾广告、恶意信息、诱骗信息的； <br>&emsp;(4)
                        涉及他人隐私、个人信息或资料的； <br>&emsp;(5) 侵害他人名誉权、肖像权、知识产权、商业秘密等合法权利的； <br>&emsp;(6)
                        含有其他干扰本服务正常运营和侵犯其他用户或第三方合法权益内容的信息。</p>
                    <h3>五、使用规则</h3>
                    <p>1、用户在本服务中或通过本服务所传送、发布的任何内容并不反映或代表，也不得被视为反映或代表GoAdmin官网的观点、立场或政策，GoAdmin官网对此不承担任何责任。</p>
                    <p>2、用户不得利用GoAdmin帐号或本服务进行如下行为： <br>&emsp;(1) 提交、发布虚假信息，或盗用他人头像或资料，冒充、利用他人名义的； <br>&emsp;(2)
                        强制、诱导其他用户关注、点击链接页面或分享信息的； <br>&emsp;(3) 虚构事实、隐瞒真相以误导、欺骗他人的； <br>&emsp;(4) 利用技术手段批量建立虚假帐号的； <br>&emsp;(5)
                        利用GoAdmin官网帐号或本服务从事任何违法犯罪活动的； <br>&emsp;(6) 制作、发布与以上行为相关的方法、工具，或对此类方法、工具进行运营或传播，无论这些行为是否为商业目的；
                        <br>&emsp;(7) 其他违反法律法规规定、侵犯其他用户合法权益、干扰GoAdmin官网正常运营或GoAdmin官网未明示授权的行为。</p>
                    <p>
                        3、用户须对利用GoAdmin官网帐号或本服务传送信息的真实性、合法性、无害性、准确性、有效性等全权负责，与用户所传播的信息相关的任何法律责任由用户自行承担，与GoAdmin官网无关。如因此给GoAdmin官网或第三方造成损害的，用户应当依法予以赔偿。</p>
                    <h3>六、账户管理</h3>
                    <p>1、
                        GoAdmin官网帐号的所有权归GoAdmin官网所有，用户完成申请注册手续后，获得GoAdmin官网帐号的使用权，该使用权仅属于初始申请注册人，禁止分享、赠与、借用、租用、转让或售卖。GoAdmin官网因经营需要，有权回收用户的GoAdmin官网帐号。</p>
                    <p>2、用户可以更改、删除GoAdmin官网帐户上的个人资料、注册信息及发布内容等，但需注意，删除有关信息的同时也会删除用户储存在系统中的文字和图片等信息。用户需承担该风险。</p>
                    <p>3、用户有责任妥善保管注册帐号信息的安全，因用户保管不善可能导致遭受盗号或密码失窃，责任由用户自行承担。在用户怀疑他人使用其帐号或密码时，用户同意立即通知GoAdmin官网。</p>
                    <p>
                        4、用户应遵守本协议的各项条款，正确、适当地使用本服务，如因用户违反本协议中的任何条款，GoAdmin官网在通知用户后有权依据协议中断或终止对违约用户GoAdmin官网帐号提供服务。同时，GoAdmin官网保留在任何时候收回GoAdmin官网帐号、用户名的权利。</p>
                    <h3>七、数据储存</h3>
                    <p>1、GoAdmin官网不对用户在本服务中相关数据的删除或储存失败负责。</p>
                    <p>2、GoAdmin官网可以根据实际情况自行决定用户在本服务中数据的最长储存期限，并在服务器上为其分配数据最大存储空间等。用户可根据自己的需要自行备份本服务中的相关数据。</p>
                    <p>3、如用户停止使用本服务或本服务终止，GoAdmin官网可以从服务器上永久地删除用户的数据。本服务停止、终止后，GoAdmin官网没有义务向用户返还任何数据。</p>
                    <h3>八、风险承担</h3>
                    <p>
                        1、用户理解并同意，GoAdmin官网仅为用户提供信息分享、传送及获取的平台，用户必须为自己注册帐号下的一切行为负责，包括用户所传送的任何内容以及由此产生的任何后果。用户应对GoAdmin官网及本服务中的内容自行加以判断，并承担因使用内容而引起的所有风险，包括因对内容的正确性、完整性或实用性的依赖而产生的风险。GoAdmin官网无法且不会对因用户行为而导致的任何损失或损害承担责任。</p>
                    <p>如果用户发现任何人违反本协议约定或以其他不当的方式使用本服务，请立即向GoAdmin官网举报或投诉，GoAdmin官网将依本协议约定进行处理。</p>
                    <p>2、用户理解并同意，因业务发展需要，GoAdmin官网保留单方面对本服务的全部或部分服务内容变更、暂停、终止或撤销的权利，用户需承担此风险。</p>
                    <h3>九、知识产权声明</h3>
                    <p>
                        1、GoAdmin官网在本服务中提供的内容（包括但不限于网页、文字、图片、音频、视频、图表等）的知识产权均归GoAdmin官网所有，但用户在使用本服务前对自己发布的内容已合法取得知识产权的除外。</p>
                    <p>2、除另有特别声明外，GoAdmin官网提供本服务时所依托网页的著作权、专利权及其他知识产权均归GoAdmin官网所有。</p>
                    <p>
                        3、GoAdmin官网在本服务中所涉及的图形、文字或其组成，以及其他GoAdmin官网标志及产品、服务名称（以下统称“GoAdmin官网标识”），其著作权或商标权归GoAdmin官网所有。未经GoAdmin官网事先书面同意，用户不得将GoAdmin官网标识以任何方式展示或使用或作其他处理，也不得向他人表明用户有权展示、使用、或其他有权处理GoAdmin官网标识的行为。</p>
                    <p>4、上述及其他任何GoAdmin官网或相关广告商依法拥有的知识产权均受到法律保护，未经GoAdmin官网或相关广告商书面许可，用户不得以任何形式进行使用或创造相关衍生作品。</p>
                    <h3>十、法律责任</h3>
                    <p>
                        1、如果GoAdmin官网发现或收到他人举报或投诉用户违反本协议约定的，GoAdmin官网有权不经通知随时对相关内容，包括但不限于用户资料、聊天记录进行审查、删除，并视情节轻重对违规帐号处以包括但不限于警告、帐号封禁
                        、设备封禁 、功能封禁的处罚，且通知用户处理结果。</p>
                    <p>
                        2、用户理解并同意，GoAdmin官网有权依合理判断对违反有关法律法规或本协议规定的行为进行处罚，对违法违规的任何用户采取适当的法律行动，并依据法律法规保存有关信息向有关部门报告等，用户应承担由此而产生的一切法律责任。</p>
                    <p>3、用户理解并同意，因用户违反本协议约定，导致或产生的任何第三方主张的任何索赔、要求或损失，包括合理的律师费，用户应当赔偿GoAdmin官网与合作公司、关联公司，并使之免受损害。</p>
                    <h3>十一、不可抗力及其他免责事由</h3>
                    <p>
                        1、用户理解并确认，在使用本服务的过程中，可能会遇到不可抗力等风险因素，使本服务发生中断。不可抗力是指不能预见、不能克服并不能避免且对一方或双方造成重大影响的客观事件，包括但不限于自然灾害如洪水、地震、瘟疫流行和风暴等以及社会事件如战争、动乱、政府行为等。出现上述情况时，GoAdmin官网将努力在第一时间与相关单位配合，及时进行修复，但是由此给用户或第三方造成的损失，GoAdmin官网及合作单位在法律允许的范围内免责。</p>
                    <p>
                        2、本服务同大多数互联网服务一样，受包括但不限于用户原因、网络服务质量、社会环境等因素的差异影响，可能受到各种安全问题的侵扰，如他人利用用户的资料，造成现实生活中的骚扰；用户下载安装的其它软件或访问的其他网站中含有“特洛伊木马”等病毒，威胁到用户的计算机信息和数据的安全，继而影响本服务的正常使用等等。用户应加强信息安全及使用者资料的保护意识，要注意加强帐号保护，以免遭致损失和骚扰。</p>
                    <p>
                        3、用户理解并确认，本服务存在因不可抗力、计算机病毒或黑客攻击、系统不稳定、用户所在位置、用户关机以及其他任何技术、互联网络、通信线路原因等造成的服务中断或不能满足用户要求的风险，因此导致的用户或第三方任何损失，GoAdmin官网不承担任何责任。</p>
                    <p>
                        4、用户理解并确认，在使用本服务过程中存在来自任何他人的包括误导性的、欺骗性的、威胁性的、诽谤性的、令人反感的或非法的信息，或侵犯他人权利的匿名或冒名的信息，以及伴随该等信息的行为，因此导致的用户或第三方的任何损失，GoAdmin官网不承担任何责任。</p>
                    <p>
                        5、用户理解并确认，GoAdmin官网需要定期或不定期地对GoAdmin官网平台或相关的设备进行检修或者维护，如因此类情况而造成服务在合理时间内的中断，GoAdmin官网无需为此承担任何责任，但GoAdmin官网应事先进行通告。</p>
                    <p>
                        6、GoAdmin官网依据法律法规、本协议约定获得处理违法违规或违约内容的权利，该权利不构成GoAdmin官网的义务或承诺，GoAdmin官网不能保证及时发现违法违规或违约行为或进行相应处理。</p>
                    <p>7、用户理解并确认，对于GoAdmin官网向用户提供的下列产品或者服务的质量缺陷及其引发的任何损失，GoAdmin官网无需承担任何责任： <br>(1)
                        GoAdmin官网向用户免费提供的服务； <br>(2) GoAdmin官网向用户赠送的任何产品或者服务。</p>
                    <p>
                        8、在任何情况下，GoAdmin官网均不对任何间接性、后果性、惩罚性、偶然性、特殊性或刑罚性的损害，包括因用户使用GoAdmin官网或本服务而遭受的利润损失，承担责任（即使GoAdmin官网已被告知该等损失的可能性亦然）。尽管本协议中可能含有相悖的规定，GoAdmin官网对用户承担的全部责任，无论因何原因或何种行为方式，始终不超过用户因使用GoAdmin官网提供的服务而支付给GoAdmin官网的费用(如有)。</p>
                    <h3>十二、服务的变更、中断、终止</h3>
                    <p>
                        1、鉴于网络服务的特殊性，用户同意GoAdmin官网有权随时变更、中断或终止部分或全部的服务（包括收费服务）。GoAdmin官网变更、中断或终止的服务，GoAdmin官网应当在变更、中断或终止之前通知用户，并应向受影响的用户提供等值的替代性的服务；如用户不愿意接受替代性的服务，如果该用户已经向GoAdmin官网支付的积分，GoAdmin官网应当按照该用户实际使用服务的情况扣除相应积分之后将剩余的积分退还用户的积分账户中。</p>
                    <p>2、如发生下列任何一种情形，GoAdmin官网有权变更、中断或终止向用户提供的免费服务或收费服务，而无需对用户或任何第三方承担任何责任： <br>&emsp;(1)
                        根据法律规定用户应提交真实信息，而用户提供的个人资料不真实、或与注册时信息不一致又未能提供合理证明； <br>&emsp;(2) 用户违反相关法律法规或本协议的约定； <br>&emsp;(3)
                        按照法律规定或有权机关的要求； <br>&emsp;(4) 出于安全的原因或其他必要的情形。</p>
                    <h3>十三、其他</h3>
                    <p>1、GoAdmin官网郑重提醒用户注意本协议中免除GoAdmin官网责任和限制用户权利的条款，请用户仔细阅读，自主考虑风险。未成年人应在法定监护人的陪同下阅读本协议。</p>
                    <p>
                        2、本协议的效力、解释及纠纷的解决，适用于中华人民共和国法律。若用户和GoAdmin官网之间发生任何纠纷或争议，首先应友好协商解决，协商不成的，用户同意将纠纷或争议提交GoAdmin官网住所地有管辖权的人民法院管辖。</p>
                    <p>3、本协议的任何条款无论因何种原因无效或不具可执行性，其余条款仍有效，对双方具有约束力。</p>`,
	}))
}

func Qrcode(ctx *gin.Context) {
	u, _ := url.QueryUnescape(ctx.Query("url"))
	if u != "" {
		png, _ := qrcode.Encode(u, qrcode.Medium, 256)
		ctx.Data(http.StatusOK, "image/png", png)
	} else {
		ctx.Data(http.StatusOK, "image/png", []byte(""))
	}
}
